#ifndef STARTER_HPP_
#define STARTER_HPP_

#include <semaphore.h>

#include <iostream>
#include <cerrno>
#include <list>

#include <Misc/Config.hpp>
#include <Misc/Log.hpp>
#include <Misc/ServerInformation.hpp>
#include <Misc/SignalHandler.hpp>
#include <Connectivity/ConnectionManager.hpp>
#include <Connectivity/UDPServer.hpp>
#include <Connectivity/UDPClient.hpp>
#include <Network/IBRCNetworkManager.hpp>
#include <UI/UserInterface.hpp>
#include <Threads/Thread.hpp>
#include <Threads/UIThread.hpp>

class Starter{

private:

	UserInterface *userInterface;
	ServerInformation *serverInformation;

	SignalHandler *signalHandler;
	uint64_t signalMask;

	ConnectionManager *connectionManager;
	IBRCNetworkManager *ibrcNetworkManager;

public:

	Starter();

	int start();

	void handleSignals();

};



#endif /* STARTER_HPP_ */
